import moment from 'moment';

export const addMonths = (n, time) => {
    const v = time ? new Date(time) : new Date();
    if(v) {
        const t = new Date(v.getFullYear(), v.getMonth(), v.getDate(), v.getHours(), v.getMinutes(), v.getSeconds(), v.getMilliseconds());
        // moment(t.setMonth(v.getMonth() - n)).format('Y-MM');
        // t.setMonth(v.getMonth() - n);
        // if(t.getDate() !== v.getDate())
        //     t.setDate(0);
        return moment(t.setMonth(v.getMonth() - (n + 1))).format('Y-MM');
    }
};

export const month = () => {
    const v = new Date();
    if(v) {
        const t = new Date(v.getFullYear(), v.getMonth(), v.getDate(), v.getHours(), v.getMinutes(), v.getSeconds(), v.getMilliseconds());
        const dayInMonth = moment(v).format('Q');
        return dayInMonth;
    }
};

export const flattenData = data => {
    const result = [];
    for(let i = 0; i < data.length; i++) {
        const {usedParts = [], ...props} = data[i];
        usedParts.forEach((item, index) => {
            result.push({
                ...item,
                ...props
            });
        });
    }
    return result;
};
/**
 *  原始数据转化为支持单元格行合并的数据
 *  使用场景 清单映射清单时，主单字段单元格合并
 *  @data 原表格数据
 *  @groupByKey 合并数据的key (主单数据的Id)
 *  @rowSpanKeyList 需要合并的字段 (编号、名称、操作列等)
 */
import {groupBy} from 'lodash';
export const generateRowSpanData = (details, groupByKey, rowSpanKeyList) => {
    const groupByData = groupBy(details, groupByKey);
    const result = [];
    for(const key in groupByData) {
        const array = groupByData[key];
        array.forEach((item, index) => {
            if(index === 0) {
                item.rowSpan = array.length;
                result.push(item);
            } else {
                rowSpanKeyList.forEach(rowSpanKey => {
                    delete item[rowSpanKey];
                });
                result.push(item);
            }
        });
    }
    return result;
};
